package com.kpmg.datalake.schedule.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author Alex.zhao [alex.zhao@kpmg.com]
 * @since Created on azhao6 on 2018-08-15 15:55:53
 */
public class CronDateUtils {

  private static final String CRON_DATE_FORMAT = "ss mm HH dd MM ? yyyy";

  /***
   * 该类提供Quartz的cron表达式与Date之间的转换
   * @param date 时间
   * @return cron类型的日期
   */
  public static String getCron(final Date date) {
    SimpleDateFormat sdf = new SimpleDateFormat(CRON_DATE_FORMAT);
    String formatTimeStr = "";
    if (date != null) {
      formatTimeStr = sdf.format(date);
    }
    return formatTimeStr;
  }

  /***
   *
   * @param cron Quartz cron的类型的日期
   * @return Date日期
   */

  public static Date getDate(final String cron) {
    if (cron == null) {
      return null;
    }
    SimpleDateFormat sdf = new SimpleDateFormat(CRON_DATE_FORMAT);
    Date date;
    try {
      date = sdf.parse(cron);
    } catch (ParseException e) {
      // 此处缺少异常处理,自己根据需要添加
      return null;
    }
    return date;
  }

  /**
   * 获取5秒以后时间
   *
   * @return String
   */
  public static String getNextFiveTime() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.SECOND, 5);
    return getCron(calendar.getTime());
  }
}
